﻿using System.ComponentModel;
using System;
using System.Text;
namespace EstoqueUnifeiADO.Dados
{


    public partial class dsTipoProduto
    {

        public partial class TIPODataTable
        {
            public void GetChild(TIPORow tipo)
            {

            }
        }


    }
}
namespace EstoqueUnifeiADO.Dados.dsTipoProdutoTableAdapters
{
    public partial class TIPOTableAdapter
    {
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [DataObjectMethod(DataObjectMethodType.Insert)]
        public virtual int Insert(string TIPODESCRICAO, string PARENT)
        {

            int? parent = null;
            if (!string.IsNullOrEmpty(PARENT))
                parent = int.Parse(PARENT);

            try
            {

                if (parent.HasValue)
                    if (new QueriesTableAdapter().ExisteProdutoAtribuido(parent.GetValueOrDefault()).GetValueOrDefault() > 0)
                        throw new Exception("Existem produtos atribuídos ao nó pai, impossível acrescentar o item");

                return this.Insert(GeraProximoTipoCodigo(PARENT), TIPODESCRICAO, parent, true);
            }
            catch (Exception)
            {

                throw;
            }


        }
        private string GeraProximoTipoCodigo(string parent)
        {
            if (string.IsNullOrEmpty(parent))
                return (int.Parse(this.GetLastCodeSemParent()) + 1).ToString().PadLeft(3, '0');
            else
            {
                string ultimocodigo = GetLastWithParent(int.Parse(parent)).ToString();
                string[] codigoQuebrado = ultimocodigo.Split('.');

                return ultimocodigo.Substring(0, (ultimocodigo.Length - (ultimocodigo.Length - ultimocodigo.LastIndexOf('.'))) + 1)
                    + (int.Parse(codigoQuebrado[codigoQuebrado.Length - 1]) + 1).ToString().PadLeft(3, '0');
            }
        }



    }
}